﻿namespace jLight
{
    /// <summary>
    /// Collection of selector constants to be used in addition to user selectors
    /// </summary>
    public static class Selectors
    {
        /// <summary>
        ///  Selects all elements.
        /// </summary>
        public static jQuerySelector All { get { return new jQuerySelector("*", false); } }

        /// <summary>
        /// Select all elements that are in the progress of an animation at the time the selector is run.
        /// </summary>
        public static jQuerySelector Animated { get { return new jQuerySelector(":animated"); } }

        /// <summary>
        /// Selects all button elements and elements of type button.
        /// </summary>
        public static jQuerySelector Button { get { return new jQuerySelector(":button"); } }

        /// <summary>
        /// Selects all elements of type checkbox.
        /// </summary>
        public static jQuerySelector CheckBox { get { return new jQuerySelector(":checkbox"); } }

        /// <summary>
        /// Matches all elements that are checked.
        /// </summary>
        public static jQuerySelector Checked { get { return new jQuerySelector(":checked"); } }

        /// <summary>
        /// Selects all elements that are disabled.
        /// </summary>
        public static jQuerySelector Disabled { get { return new jQuerySelector(":disabled"); } }
        
        /// <summary>
        /// Select all elements that have no children (including text nodes).
        /// </summary>
        public static jQuerySelector Empty { get { return new jQuerySelector(":empty"); } }

        /// <summary>
        /// Selects all elements that are enabled.
        /// </summary>
        public static jQuerySelector Enabled { get { return new jQuerySelector(":enabled"); } }

        /// <summary>
        /// Selects even elements, zero-indexed.
        /// </summary>
        public static jQuerySelector Even { get { return new jQuerySelector(":even"); } }

        /// <summary>
        /// Selects all elements of type file.
        /// </summary>
        public static jQuerySelector File { get { return new jQuerySelector(":file"); } }

        /// <summary>
        /// Selects all elements that are the first child of their parent.
        /// </summary>
        public static jQuerySelector FirstChild { get { return new jQuerySelector(":first-child"); } }

        /// <summary>
        /// Selects the first matched element.
        /// </summary>
        public static jQuerySelector First { get { return new jQuerySelector(":first"); } }

        /// <summary>
        /// Selects all elements that are headers, like h1, h2, h3 and so on.
        /// </summary>
        public static jQuerySelector Header { get { return new jQuerySelector(":header"); } }
        
        /// <summary>
        /// Selects all elements of type image.
        /// </summary>
        public static jQuerySelector Image { get { return new jQuerySelector(":image"); } }
        
        /// <summary>
        /// Selects all input, textarea, select and button elements.
        /// </summary>
        public static jQuerySelector Input { get { return new jQuerySelector(":input"); } }
        
        /// <summary>
        /// Selects all elements that are the last child of their parent.
        /// </summary>
        public static jQuerySelector LastChild { get { return new jQuerySelector(":last-child"); } }
        
        /// <summary>
        /// Selects the last matched element.
        /// </summary>
        public static jQuerySelector Last { get { return new jQuerySelector(":last"); } }

        /// <summary>
        /// Selects odd elements, zero-indexed.
        /// </summary>
        public static jQuerySelector Odd { get { return new jQuerySelector(":odd"); } }

        /// <summary>
        /// Selects all elements that are the only child of their parent.
        /// </summary>
        public static jQuerySelector OnlyChild { get { return new jQuerySelector(":only-child"); } }

        /// <summary>
        /// Select all elements that are the parent of another element, including text nodes.
        /// </summary>
        public static jQuerySelector Parent { get { return new jQuerySelector(":parent"); } }

        /// <summary>
        /// Selects all elements of type password.
        /// </summary>
        public static jQuerySelector Password { get { return new jQuerySelector(":password"); } }

        /// <summary>
        /// Selects all elements of type radio.
        /// </summary>
        public static jQuerySelector Radio { get { return new jQuerySelector(":radio"); } }

        /// <summary>
        /// Selects all elements of type reset.
        /// </summary>
        public static jQuerySelector Reset { get { return new jQuerySelector(":reset"); } }

        /// <summary>
        /// Selects all elements that are selected.
        /// </summary>
        public static jQuerySelector Selected { get { return new jQuerySelector(":selected"); } }

        /// <summary>
        /// Selects all elements of type submit.
        /// </summary>
        public static jQuerySelector Submit { get { return new jQuerySelector(":submit"); } }

        /// <summary>
        /// Selects all elements of type text.
        /// </summary>
        public static jQuerySelector Text { get { return new jQuerySelector(":text"); } }

        /// <summary>
        /// Selects all elements that are visible.
        /// </summary>
        public static jQuerySelector Visible { get { return new jQuerySelector(":visible"); } }
    }
}